Date :................................... 4 mai 1990
Programme : .............ALS VIEW V3.10
Protection : .......................Clef physique
Fichier : ...............................ALSV.EXE
Outils : .......PERISCOPE, Carte PANO
Temps passé :......................... Pas mal...
Société :................................................
Divers :.... PERISCOPE chargé à 1700h
Origine : ..............................................?
Numéro : ....................................019bis
	On arrive assez facilement à déterminer l'endroit ou le programme
	affiche le message " clef physique absente" et d'infléchir le soft
	avant, mais il se plante un peu plus loin.

	Modification du saut pour contourner l'affichage du message et ne
	pas sortir du programme:

	Dans la chaine suivante, adresse 2699:09FE avec PERISCOPE chargé à
	1700:0000 il faut remplacer 74 par 75. 	

	7418
	9A(50790A36)  ---->  ceci est un branchement FAR on ne trouve donc
	B83000		     pas ces valeurs là.
	2D5301
	A35824
	
	Peu après le soft se plante sur chaque instruction ES:MOV [DI],AL
	car ES ayant été mal initialisé pointe sur 0000; on écrit donc dans
	la table des INT.
	Par ailleurs le soft tourne en supprimant ces instructions à deux
	exeptions près ( qui rendent le produit inutilisable ) il s'agit
	d'une part de l'impossibilité de charger et sauver un fichier de
	travail ( dans le sous menu Quit ), les chargements et sauvegardes
	fonctionnent dans les autres menus. 
	D'autre part le soft "fonctionne" si l'on a chargé PERISCOPE
	auparavant et que l'on fait un NMI BREAK dans la zone cité plus
	haut, le soft se plante s'il est lancé d'un seul coup! ( aucune
	idée la dessus pour l'instant ).

	ES est chargé à l'adresse 0A22 par LES AX,[0DDF] ; une instruction
	du type MOVE un peu spéciale.
	Dans ce cas le contenu de 0DDF n'est pas CS:0DDF mais DS:0DDF.

	La portion de code ci-dessous existe également à l'adresse 072F et
	apparement n'est pas utilisée.
	_____________________________________________________
	2699:0E66 26            ES:
	2699:0E67 8805          MOV     [DI],AL
	
	2699:0E69 C70641240D00  MOV     WORD PTR [2441],000D
	2699:0E6F A05324        MOV     AL,[2453]
	2699:0E72 C43E4124      LES     DI,[2441]
	_____________________________________________________
	2699:0E76 26            ES:
	2699:0E77 8805          MOV     [DI],AL
	2699:0E79 31C0          XOR     AX,AX
	2699:0E7B A34324        MOV     [2443],AX
	2699:0E7E C70641246C04  MOV     WORD PTR [2441],046C
	2699:0E84 C43E4124      LES     DI,[2441]
	2699:0E88 26            ES:
	2699:0E89 8A05          MOV     AL,[DI]
	2699:0E8B A25424        MOV     [2454],AL
	2699:0E8E C70641240700  MOV     WORD PTR [2441],0007
	2699:0E94 A05424        MOV     AL,[2454]
	2699:0E97 C43E4124      LES     DI,[2441]
	_____________________________________________________
	2699:0E9B 26            ES:
	2699:0E9C 8805          MOV     [DI],AL
	
	2699:0E9E C70641240E00  MOV     WORD PTR [2441],000E
	2699:0EA4 A05424        MOV     AL,[2454]
	2699:0EA7 C43E4124      LES     DI,[2441]
	_____________________________________________________
	2699:0EAB 26            ES:
	2699:0EAC 8805          MOV     [DI],AL
	
	2699:0EAE C70641246C04  MOV     WORD PTR [2441],046C
	2699:0EB4 C43E4124      LES     DI,[2441]
	2699:0EB8 26            ES:
	2699:0EB9 8A05          MOV     AL,[DI]
	2699:0EBB A25424        MOV     [2454],AL
	2699:0EBE C70641240600  MOV     WORD PTR [2441],0006
	2699:0EC4 A05424        MOV     AL,[2454]
	2699:0EC7 C43E4124      LES     DI,[2441]
	_____________________________________________________
	2699:0ECB 26            ES:
	2699:0ECC 8805          MOV     [DI],AL
	
	2699:0ECE C70641240D00  MOV     WORD PTR [2441],000D
	2699:0ED4 A05424        MOV     AL,[2454]
	2699:0ED7 C43E4124      LES     DI,[2441]
	_____________________________________________________
	2699:0EDB 26            ES:
	2699:0EDC 8805          MOV     [DI],AL
	
	2699:0EDE C70641240500  MOV     WORD PTR [2441],0005
	2699:0EE4 C43E4124      LES     DI,[2441]
	_____________________________________________________
	2699:0EE8 26            ES:
	2699:0EE9 C60502        MOV     BYTE PTR [DI],02
		
	Les entrées sorties de la clef physique se font par le CALL 02F9.
	Une chose curieuse; après l'instruction IN AL,378h le contenu du
	registre AL est ANDer avec 40h ce qui signifie que l'on ne test
	qu'un seul bit ( le 7eme ). Ceci est confirmé par l'examen physique
	de la clef qui a été livré avec le logiciel EED3. Voir schéma de
	la clef. Par contre là ou le bat blesse c'est qu'apparement ce bit
	n'est testé nul part. J'ai examiné toutes les instructions du CALL
	2F9 une par une, j'ai vérifié tout les flags pouvant être actionnés
	sans résultat...
	Il reste la dernière solution c'est de prendre la portion de code
	et de la "donner" à TVC286 pour voir.

	360A:02F9	CALL 2F9
			JNZ  016E
			INC  BL
			CALL 2F9
			JZ   016E
			XOR  AX,AX
			PUSH AX
			JMP  01AF

	Avec la carte PANO, PERISCOPE s'affiche en pointant sur l'adresse
	spécifiée sur les RC;

	Ceci est le contenu du CALL 02F9

	AX=0040 BX=0000 CX=0100 DX=0378 SP=0D8C BP=0D9A SI=0378 DI=0005
	DS=360A ES=0000 SS=45B2 CS=360A IP=02F9  NV UP EI PL ZR NA PE NC
	WR SS:0D8A = 1700
	360A:02F9 E870FF        CALL    026C
	360A:02FC 51            PUSH    CX
	360A:02FD B90A00        MOV     CX,000A
	360A:0300 0ADB          OR      BL,BL
	360A:0302 7505          JNZ     0309
	360A:0304 E819FF        CALL    0220
	360A:0307 EB03          JMP     030C
	360A:0309 E891FF        CALL    029D
	360A:030C E84FFF        CALL    025E
	360A:030F 7402          JZ      0313
	360A:0311 E2ED          LOOP    0300
	360A:0313 59            POP     CX
	360A:0314 C3            RET

	Le CALL 026C fait les sorties sur la Clef, le CALL 0264 sert de
	tempo.

	360A:026C 32E4          XOR     AH,AH
	360A:026E 8AC4          MOV     AL,AH
	360A:0270 EB00          JMP     0272
	360A:0272 EE            OUT     DX,AL
	360A:0273 8AC4          MOV     AL,AH
	360A:0275 EB00          JMP     0277
	360A:0277 EE            OUT     DX,AL
	360A:0278 E8E9FF        CALL    0264
	360A:027B E8E6FF        CALL    0264
	360A:027E B43F          MOV     AH,3F                       ; '?'
	360A:0280 8AC4          MOV     AL,AH
	360A:0282 EB00          JMP     0284	il y a des choses curieuses
						comme ce saut !
	360A:0284 EE            OUT     DX,AL
	360A:0285 8AC4          MOV     AL,AH
	360A:0287 EB00          JMP     0289
	360A:0289 EE            OUT     DX,AL
	360A:028A E8D7FF        CALL    0264

	CALL 0264 ( temporisation );

	360A:0264 51            PUSH    CX
	360A:0265 B94000        MOV     CX,0040
	360A:0268 E2FE          LOOP    0268
	360A:026A 59            POP     CX
	360A:026B C3            RET

	Le CALL 025E lis la clef en faisant un ET avec le bit 7;

	360A:025E 42            INC     DX
	360A:025F EC            IN      AL,DX
	360A:0260 4A            DEC     DX
	360A:0261 2440          AND     AL,40                       ; '@'
	360A:0263 C3            RET

	FREDDY